enum Number{
    Int(i32),
    Float(f32),
    UINT(u32),
} 

fn read_num(num : &Number){
    match num{
        &Number::Int(value) => println!("i32 -> {}", value),
        &Number::Float(value) => println!("f32 -> {}",value),
        &Number::UINT(value) => println!("u32 -> {}", value),
    }
}

fn main(){
    let n : Number = Number::Int(10);
    read_num(&n);
    
    // tag: 4bytes + max(INT, Float, UINT)
    println!("sizeof Number -> {}", std::mem::size_of::<Number>());
}
